/**
 *博尔信基础开发平台
 *<br> 版权声明：厦门博尔信软件有限公司版权所有,违者必究
 *<br> Copyright:  Copyright (c) 2012
 *<br> Company:pearlsoft
 *<br> @author 蒋勇华
 *<br> 2012-5-1
 *<br> @version 1.0
 *————————————————————————————————————
 *修改记录
 *    修改者：
 *    修改时间：
 *    修改原因：
 *——————————————————————————————————————
 */
package com.pearlsoft.webapp.core.web.basehandler;

import org.apache.commons.lang.StringUtils;

import com.pearlsoft.webapp.core.dataset.DataSet;
import com.pearlsoft.webapp.core.dataset.Query;
import com.pearlsoft.webapp.core.dataset.spi.ContextQueryHandler;

/**
 *描述： 
 *
 * 
 */
public abstract class AbsBaseQueryHandler extends ContextQueryHandler {
	/***
	 * 根据对象ID查找对象，query中包含objId参数;objId值为要获取的对象ID
	 * @param query
	 * @param ds
	 * @throws Exception
	 */
	public abstract void getEntity(Query query, DataSet ds) throws Exception;
	/***
	 * 快速查询,query中包含searchValue参数,searchValue值为要模糊匹配的值
	 * @param query
	 * @param ds
	 * @throws Exception
	 */
	public abstract void quickSearch(Query query, DataSet ds) throws Exception;
	/***
	 * 高级查询,query中包含 [ui:searchform]中定义的字段参数
	 * @param query
	 * @param ds
	 * @throws Exception
	 */
	public abstract void advSearch(Query query, DataSet ds) throws Exception;
	
	protected  void appendLike(StringBuilder buffer,String fieldName,String value){
		if(!StringUtils.isBlank(fieldName) && !StringUtils.isBlank(value)){
			buffer.append(" ").append(fieldName).
			append(" like '%").append(value).append("%' ");
		}
	}
	protected  void appendLikeAnd(StringBuilder buffer,String fieldName,String value){
		if(!StringUtils.isBlank(fieldName) && !StringUtils.isBlank(value)){
			buffer.append(fieldName).
			append(" like '%").append(value).append("%' ").append(" and ");
		}
	}
	protected  void appendLikeOr(StringBuilder buffer,String fieldName,String value){
		if(!StringUtils.isBlank(fieldName) && !StringUtils.isBlank(value)){
			buffer.append(fieldName).
			append(" like '%").append(value).append("%' ").append(" or ");
		}
	}
	
	protected  boolean appendAndWhereLike(StringBuilder buffer,boolean hasWhere,  String fieldName,String value){
		if( !StringUtils.isBlank(value) ){
			if(!hasWhere){
				buffer.append(" where ");
				hasWhere = true;
			}else{
				buffer.append(" and ");
			}
			appendLike(buffer, fieldName, value);
		}
		return hasWhere;
	}
	
	
	
	
	
}
